package com.alameda.service.user;

import com.alameda.common.commonpent.mp.BaseService;
import com.alameda.pojo.user.AdUserDO;
import com.alameda.user.dto.AdUserDTO;
import com.alameda.user.vo.AdUserVO;
import com.baomidou.mybatisplus.core.metadata.IPage;

import java.util.List;
import java.util.Map;

/**
 * 用户 业务逻辑层
 *
 * @author Lv
 * @date 2024/06/02
 */
public interface AdUserService extends BaseService<AdUserDO> {
    /**
     * 注册账号
     *
     * @param adUserDTO 用户信息
     * @return
     */
    Boolean register(AdUserDTO adUserDTO);

    /**
     * 登录系统
     *
     * @param adUserDTO 用户信息
     * @return
     */
    Map<String, Object> login(AdUserDTO adUserDTO);

    /**
     * 获取当前登录用户信息
     *
     * @return
     */
    AdUserVO getUserInfo();

    /**
     * 修改用户信息
     *
     * @param adUserDTO 用户信息
     * @return
     */
    Boolean edit(AdUserDTO adUserDTO);

    /**
     * 退出登录
     *
     * @return
     */
    Boolean logout();

    /**
     * 查询用户列表
     *
     * @param adUserDTO 用户信息
     * @return
     */
    IPage<AdUserVO> loadUser(AdUserDTO adUserDTO);

    /**
     * 导出excel
     *
     * @param adUserDTO 用户信息
     */
    void export(AdUserDTO adUserDTO);

    /**
     * 删除组织下的用户
     *
     * @param organizationIdList 组织id集合
     * @return
     */
    Boolean removeByOrganizationIdList(List<Long> organizationIdList);

    /**
     * 通过账号查询
     *
     * @param username 账号
     * @return
     */
    default AdUserDO findByUserName(String username) {
        return this.findOne(AdUserDO.builder().username(username).build());
    }

    /**
     * 处理管理端token续期
     *
     * @param token 登录令牌
     * @return
     */
    Boolean dealAdUserTokenRenewal(String token);

    /**
     * 通过登录令牌获取用户信息
     *
     * @param token 登录令牌
     * @return
     */
    AdUserDO findByToken(String token);
}
